package top.as.sean.biz.system;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import top.as.sean.dao.dto.system.DictTypeEdit;
import top.as.sean.dao.dto.system.DictTypePage;
import top.as.sean.dao.dto.system.DictTypeAdd;
import top.as.sean.dao.dto.system.DictValueAdd;
import top.as.sean.dao.dto.system.DictValueEdit;
import top.as.sean.dao.dto.system.DictValuePage;
import top.as.sean.dao.entity.pojo.system.DataDict;

import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;

/**
 * 数据字典
 *
 * @author: ArchieSean
 * @create: 2022/11/6
 */
public interface IDataDict extends IService<DataDict> {
    /**
     * 获取数据字典值
     *
     * @param dictCode 数据字典编码
     * @return map
     */
    Map<String, String> getDictData(@NotNull String dictCode);

    /**
     * 字典类型分页
     *
     * @param dto 入参
     * @return page
     */
    Page<DataDict> getTypePage(DictTypePage dto);

    /**
     * 新增字典类型
     *
     * @param dto 入参
     * @return boolean
     */
    Boolean addType(DictTypeAdd dto);

    /**
     * 批量删除数据字典类型
     *
     * @param ids 字典id
     * @return boolean
     */
    Boolean removeBatchTypes(List<Long> ids);

    /**
     * 编辑数据字典类型
     *
     * @param dto 入库
     * @return boolean
     */
    Boolean editType(DictTypeEdit dto);

    /**
     * 新增数据字典值
     *
     * @param dto 入参
     * @return boolean
     */
    Boolean addValue(DictValueAdd dto);

    /**
     * 数据字典值分页
     *
     * @param dto 入参
     * @return page
     */
    Page<DataDict> getValuePage(DictValuePage dto);

    /**
     * 编辑数据字典值
     *
     * @param dto 入参
     * @return boolean
     */
    Boolean editValue(DictValueEdit dto);

    /**
     * 删除数据字典值
     *
     * @param id id
     * @return boolean
     */
    Boolean delValue(Long id);
}
